package design_pattern.proxy.sample;

import java.util.Objects;

/**
 * @version 1.0.0
 * Created by cyd on 2022-06-06 14:25:03
 * @ClassName : design_pattern.proxy.demo01.Proxy
 * @Description : 代理类，我们访问代理类就可以访问到实际类
 */
public class Proxy extends Subject{

    private RealSubject realSubject;

    /**
     * 我们访问的代理类的同名方法
     */
    @Override
    public void request() {
        if (Objects.isNull(realSubject)){
            realSubject=new RealSubject();
        }
        // 前置增强
        this.doSome();

        // 实际是执行被代理类的真实方法
        realSubject.request();
    }

    // 我们可以在这里做很多处理，就是利用了代理模式创造的间接性空间
    private void doSome(){
        System.out.println("代理对象 doSome");
    }
}
